using System.ComponentModel.DataAnnotations.Schema;
using System.Data.Entity.ModelConfiguration;

namespace QldtSdh.DAL.Models.Mapping
{
	public class HocVien_KetQuaHocTapMap : EntityTypeConfiguration<HocVien_KetQuaHocTap>
	{
		public HocVien_KetQuaHocTapMap()
		{
			// Khoá chính
			this.HasKey(t => new { t.MaHocVien, t.MaHocPhanGUID });

			// Các cột
			this.Property(t => t.MaGhiNhanDiemThiKetThucHocPhanGUID)
				.IsRequired()
                .HasMaxLength(50);

			this.Property(t => t.MaHocVien)
				.IsRequired()
                .HasMaxLength(50);

			this.Property(t => t.MaHocPhanGUID)
				.IsRequired()
                .HasMaxLength(50);

			this.Property(t => t.DiemChu)
				.IsRequired()
                .HasMaxLength(50);

			// Ánh xạ Property của POCO vào Column của Table
			this.ToTable("HocVien_KetQuaHocTap");
			this.Property(t => t.MaGhiNhanDiemThiKetThucHocPhanGUID).HasColumnName("MaGhiNhanDiemThiKetThucHocPhanGUID");
			this.Property(t => t.MaHocVien).HasColumnName("MaHocVien");
			this.Property(t => t.MaHocPhanGUID).HasColumnName("MaHocPhanGUID");
			this.Property(t => t.LanHoc).HasColumnName("LanHoc");
			this.Property(t => t.LanThi).HasColumnName("LanThi");
			this.Property(t => t.DiemThi).HasColumnName("DiemThi");
			this.Property(t => t.HeSoDiemQTHT).HasColumnName("HeSoDiemQTHT");
			this.Property(t => t.DiemQTHT).HasColumnName("DiemQTHT");
			this.Property(t => t.DiemHe10).HasColumnName("DiemHe10");
			this.Property(t => t.DiemChu).HasColumnName("DiemChu");
			this.Property(t => t.DiemHe4).HasColumnName("DiemHe4");

			// Các quan hệ
			this.HasRequired(t => t.HocPhan)
				.WithMany(t => t.HocVien_KetQuaHocTap)
				.HasForeignKey(d => d.MaHocPhanGUID);
			this.HasRequired(t => t.HocVien)
				.WithMany(t => t.HocVien_KetQuaHocTap)
				.HasForeignKey(d => d.MaHocVien);

		}
	}
}
